//
//  main.c
//  #include的指令
//
//  Created by ws on 2017/7/18.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>
/**
 stdio.h
 1.stdio.h 是C语言函数库中的一个头文件,里面声明了一些常用的输入输出函数,比如往屏幕上输出内容的printf函数
 2.这里之所以包含 stdio.h 文件,是因为用到了在 stdio.h 内部声明的printf函数,这个函数可以向屏幕输出数据,这个程序输出的内容是:Hello, World!
 注意:stdio.h里面只有printf函数的声明.只要知道函数的声明,就可以调用这个函数,就能编译成功.不过想要这个程序能够运行成功,必须保证在链接的时候能找到函数的定义.其实链接除了会将所有的目标文件组合在一起,还会关联C语言的函数库,函数库中就有printf函数的定义.因此这个程序是可以链接成功的
 
 */

/**
 #include是一个预编译指令
 预编译指令:就是在编译之前就需要解析处理的指令
 #include作用:在预编译的时候拷贝#include后面文件的内容到#include指令所在的位置
 
 #include "文件名称":
 1.首先在当前文件所在文件查找(同等级的文件目录下)-->(先在这条include指令的父文件所在文件夹内搜索，所谓的父文件，就是这条include指令所在的文件
)
 2.如果在当前目录下没有找到,就会去编译器下的#include路径下查找
 3.如果还没有找到就去系统的#include路径下查找
 4.如果还没有找到就报错啦
 
 #include <文件名称>:(节省时间)
 1.首先就会去编译器下的#include路径下查找
 2.如果还没有找到就去系统的#include路径下查找
 3.如果还没有找到就报错啦
 
 总结:当你需要包含在项目中的文件(自己写的文件)就有#include "文件名称",当你需要包含库文件的时候就使用#include <文件名称>
 1.#include 是C语言的预处理指令之一，所谓预处理，就是在编译之前做的处理，预处理指令一般以 # 开头
 2.#include 指令后面会跟着一个文件名，预处理器发现 #include 指令后，就会根据文件名去查找文件，并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源文件中的 #include 指令，就像你把被包含文件中的全部内容拷贝到这个 #include 指令所在的位置一样。所以第一行指令的作用是将stdio.h文件里面的所有内容拷贝到第一行中
 3.如果被包含的文件拓展名为.h，我们称之为"头文件"(Header File)，头文件可以用来声明函数，要想使用这些函数，就必须先用 #include 指令包含函数所在的头文件
 4.#include 指令不仅仅限于.h头文件，可以包含任何编译器能识别的C/C++代码文件，包括.c、.hpp、.cpp等，甚至.txt、.abc等等都可以
 5.#include ”sum.h"使用的是相对路径，其实也可以使用绝对路径。比如#include "/Users/apple/Desktop/sum.h”
 */
int main(int argc, const char * argv[]) {
#include "a.txt"
    
    return 0;
}

/**
 如果你使用的是clang编译器，clang设置include路径是（4.2是编译器版本）：/usr/lib/clang/4.2/include
 Xcode5或OS X10.9以后系统会自动使用Xcode自带的编译器，它的include路径是
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include
 Mac系统的include路径有：
 /usr/include
 /usr/local/include
 
 显示Mac隐藏文件的命令：defaults write com.apple.finder AppleShowAllFiles -bool true
 隐藏Mac隐藏文件的命令：defaults write com.apple.finder AppleShowAllFiles -bool false
 或者
 显示Mac隐藏文件的命令：defaults write com.apple.finder AppleShowAllFiles  YES
 隐藏Mac隐藏文件的命令：defaults write com.apple.finder AppleShowAllFiles  NO
 
 
 使用root权限 编辑文件
 sudo vi  输入密码进入vi编译器的一般模式 ,点击键盘上的i键进入编辑模式，此时可以修改文件内容，修改完毕esc退出编辑模式
 在一般模式下
 :wq   保存退出
 :q!   不保存退出
*/


/**
 编译 --> 链接 --> 运行
 运行步骤分析：
 1> 在编译之前，预编译器会将sum.h文件中的内容拷贝到main.c中
 2> 接着编译main.c和sum.c两个源文件,生成目标文件main.o和sum.o,这2个文件是不能被单独执行的,原因很简单:
 * sum.o中不存在main函数,肯定不可以被执行
 * main.o中虽然有main函数,但是它在main函数中调用了一个sum函数,而sum函数的定义却存在于sum.o中,因此main.o依赖于sum.o
 3> 把main.o、sum.o链接在一起,生成可执行文件
 4> 运行程序

 
 */

